Coding the Future
lito
Everybody loves freeware.
Everybody adores opensource.
Everybody has sympathy for linux.
Everybody uses windows...
Why
Windows has us on a leash.
Because we need to open word docs and excel sheets and powerpoint presentations.
Because we want to play quake3 and warcraft3 (and we need our hardware supported).
But in the background the real reason is that this generation of game/demo coders is dependent on visual studio and directx. Our learning places like gamedev.net, or even hugi magazine (sometimes) all share code in the form of vstudio projects or other windows only formats. This of course is the intention of microsoft (check out the visual studio .net initiative and see what you think).
What we need
True: openoffice.org could be the solution to the first of the problems i posed. I'm using it right now (on windows by the way) and I'm very happy with how it works (the other day I opened an excel sheet with it).
Also true: loki games and some other companys have been porting important games to linux. But linux users (not to mention mac users) are still second class citizens in the world of games.
We need a coding environment that is truly platform independent so that you can run the latest software regardless of your choice of OS or hardware. The internet is exactly this type of environment except for information instead of software (and we all know how cool it is). The importance of this is that it gives us economical independence from the big greedy companys (all big companys).
Two directions
The way I see it we have two directions available.
The first is to compile code for a nonexistent machine and have interpreters (virtual machines) on every platform, this is what is provided by java (to trust sun or not to trust sun, that is the question), also the new AmigaOS was going to be this type of thing until it was abandoned.
The second option is to compile native code on each machine but make the compiler syntax standard, the programing language standard (no winmain or #pragma directives please), and use platform independent (and hopefully opensource) librarys to do things like manage windows, play sound, and render graphics.
Where we're standing
Direction 1: Java has a set of free compilers and virtual machines provided by sun. It works pretty good on almost every system, but still scares he heck out of me. Of course maybe I'm just paranoid. I've been using JavE (an editor coded in java) for ascii art (no i'm not an ascii artist but it's fun) and it works fine. Also I'm sure it works fine on almost every internet capable machine and it's very comforting to know that.
Direction 2: The Gnu compiler collection is opensouce and good. It has ports to windows (mingw and cygwin, i use the latest dev-cpp ide with mingw in windows although it still has a lot of bugs) and i think to other platforms also. As for librarys we have gnome for windows (opensource i think, i haven't used it yet), opengl and sdl for graphics (sdl offers timing, some input and sprite stuff, it's very neat for games), and i've been learning fmod for sound (its free as long as you don't sell your software, if you want to sell there is a pretty reasonable license (no royaltys), also it was coded by a demoscener).
Conclusion
The internet brings us hope that one day we will be truly free to choose the best technology available, and buy it from the guys that are doing things best for us.
Everybody can influence the future of things. For example i remember when coding assembler meant trying to get the latest version of turbo assembler or masm (of course their syntax was different which meant your code was to compile with one and only one of the two). But that has changed since NASM appeared. Would the 256b.com scene be so cool if we didn't have nasm to compile all the sources in a standard and free way?
Take the small steps you can towards independence. If you make webpages use standard tags only. If you code in C++ try to keep your platform dependent stuff bundled and use standard C++ only. Also take a look at the opensource or free alternatives to whatever librarys you use (if they're reasonably good use them, if not send feedback to the developers and request the missing important features).
Small things do make a difference. I've written this article motivated by “The art of getting started” that was posted in Hugi25.
lito